home *** CD-ROM | disk | FTP | other *** search
/ FM Towns: Free Software Collection 10 / FM Towns Free Software Collection 10.iso / ms_dos / tool / dprint / _dpsetup.c next >
Text File  |  1994-08-11  |  3KB  |  140 lines

  1. /*
  2.  
  3. 8086|Printman/POSTCARD セットアップユーティリティ Version 1.00
  4. Copyright (c) 1993,94 Delmonta
  5.  
  6. */
  7.  
  8. #include<stdlib.h>
  9. #include"dprint.h"
  10.  
  11. struct    DFLFILE    Dflfile = 
  12. {
  13.     PRNBIOS_TOWNS,PRNMODE_ESCP,    /* プリンタの機種設定 */
  14.     300,850,            /* マージン */
  15.     {PROP_LEFT,PROP_RIGHT,PROP_CENTER,PROP_CENTER,PROP_FLEFT}
  16. };
  17.  
  18. enum    PRNBIOS    Prn_machine = PRNBIOS_TOWNS;
  19. enum    PRNMODE    Prn_mode    = PRNMODE_ESCP;
  20.  
  21. /*---------------------------------------------------------------------------*/
  22.  
  23. static unsigned    ask_int(char *mes,unsigned max)
  24. {
  25.     char        buf[6];
  26.     unsigned    a;
  27.  
  28. askint_rep:
  29.     printf("\n\n%s:",mes);
  30.     fgets(buf,sizeof(buf),stdin);
  31.  
  32.     a = atoi(buf);
  33.     if    (a>max)
  34.         goto askint_rep;
  35.  
  36.     return a;
  37. }
  38.  
  39. /*---------------------------------------------------------------------------*/
  40.  
  41. static    bool    ask_yesno(char *mes)
  42. {
  43.     printf("%s(y/n)?",mes);
  44. askyn_rep:
  45.     switch    (getc(stdin))
  46.     {
  47.     case 'y':
  48.     case 'Y':
  49.         while    (getc(stdin)!='\n')
  50.             ;
  51.         return TRUE;
  52.     case 'n':
  53.     case 'N':
  54.         while    (getc(stdin)!='\n');
  55.             ;
  56.         return FALSE;
  57.     default:
  58.         putchar('\a');
  59.         goto askyn_rep;
  60.     }
  61. }
  62.  
  63. /*---------------------------------------------------------------------------*/
  64.  
  65. static    fract    ask_fract(char *mes)
  66. {
  67.     char        buf[8];
  68.  
  69.     printf("\n\n%s:",mes);
  70.  
  71.     
  72.  
  73.     fgets(buf,sizeof(buf),stdin);
  74.  
  75.     return dpatoi(buf);
  76. }
  77.  
  78. /*---------------------------------------------------------------------------*/
  79.  
  80. static    void    testprint(void)
  81. {
  82.     while    (prn_init())
  83.     {
  84.         printf("プリンタの準備ができていません.リターンキーで再開します\n");
  85.         while    (getc(stdin)!='\n')
  86.             ;
  87.     }
  88.  
  89.     prn_putstr("■");        /* プリンタのエラーチェックは省略 */
  90.     prn_formfeed();
  91. }
  92.  
  93. /*---------------------------------------------------------------------------*/
  94.  
  95. int    main(int argc,char **argv)
  96. {
  97.     printf( "\n8086|Printman/POSTCARD セットアップユーティリティ Version 1.00\n"
  98.         "Copyright (c) 1993,4 Delmonta\n");
  99.  
  100.     Dflfile.prn_machine = Prn_machine =(enum PRNBIOS)ask_int(
  101.         "コンピュータの機種は?\n\n"
  102.         "0...NEC PC-9801/9821シリーズ/セイコーエプソン PC-286/386/486シリーズ\n"
  103.         "1...富士通 FMR/FM TOWNSシリーズ/松下電器 Panacom Mシリーズ\n"
  104.         "2...IBM PC/AT互換機\n"
  105.         "3...東芝 J-3100シリーズ/AX規格機\n\n",3);
  106.  
  107.     Dflfile.prn_mode = Prn_mode = (enum PRNMODE)ask_int(
  108.         "プリンタの機種は?\n\n"
  109.         "0...ESC/P24-J84規格準拠\n"
  110.         "1...MSX規格準拠漢字プリンタ\n"
  111.         "2...NEC PC-PR201H/101H互換\n"
  112.         "3...富士通 FMPRシリーズプリンタ\n\n",3);
  113.  
  114.     if    (ask_yesno("テスト印刷をしますか"))
  115.         testprint();
  116.  
  117.     Dflfile.umrgin = ask_fract("プリンタの物理上マージンは[mm]?");
  118.     Dflfile.lmrgin = ask_fract("プリンタの物理左マージンは[mm]?");
  119.  
  120.     if    (ask_yesno("定義ファイルに書き込みますか"))
  121.     {
  122.     static    char    dflheader[] =   "8086|Printman/POSTCARD デフォルト設定"
  123.                     "ファイル Version 1.00\x1a";
  124.  
  125.         FILE    *fp = fopen("DPRINT.DFL","wb");
  126.  
  127.         if    (fp==NULL)
  128.         {
  129.             printf("ファイルがオープンできません.\n");
  130.             exit(1);
  131.         }
  132.                         /* 最後の'\0'は書き込まない */
  133.         fwrite(dflheader,1,sizeof(dflheader)-1,fp);
  134.         fwrite(&Dflfile,sizeof(struct DFLFILE),1,fp);
  135.         fclose(fp);
  136.     }
  137.  
  138.     exit(0);
  139. }
  140.